/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ptr.ptrsystem.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ptr.controladores.conexionsqlserver;
import java.sql.*;
import javax.swing.JOptionPane;
import com.ptr.ptrsystem.bean.Acceso;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpSession;
/**
 *
 * @author pavel
 */
@WebServlet(name = "MantenimientoAcceso", urlPatterns = {"/MantenimientoAcceso"})
public class MantenimientoAccesoServlet extends HttpServlet {

    public MantenimientoAccesoServlet() {
    }

    conexionsqlserver base=new conexionsqlserver();
    Connection conn=null;
    Statement st=null;
    ResultSet rs=null;
    CallableStatement cst;
    Acceso log=new Acceso();
    String u=null; String p=null;
    String pas1=null;
    String pas2=null;
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        log.setCUI_PERS(request.getParameter("usu"));
        log.setPASS_ACCESO(request.getParameter("pasword"));
        pas1=request.getParameter("pas2");
        pas2=request.getParameter("pas3");
        String boton=request.getParameter("btn1");
        
        if("ingresar".equals(boton))
        {accesosistem(request,response);}
        if("actualizar".equals(boton))
        {
            try
            {
                base.conectar();
                conn=base.getconection();
                st=conn.createStatement();
                String query="select CUI_PERS, PASS_ACCESO from tb_acceso";
                query=query+" where CUI_PERS='"+log.getCUI_PERS()+"' AND PASS_ACCESO='"+log.getPASS_ACCESO()+"'";
                rs=st.executeQuery(query);
                    if(rs.next())
                    {
                        actualizapass(request,response);
                    }else
                    {
                        JOptionPane.showMessageDialog(null,"Usuario no existe o clave incorrecta", "Informacion", JOptionPane.CANCEL_OPTION);
                        getServletContext().getRequestDispatcher("/mantenimiento/frm-cambiacontrasenia.jsp").forward(request, response);
                    }
            }
            catch(SQLException error)
            {
               JOptionPane.showMessageDialog(null, "Error en logueo", "Mensaje", JOptionPane.CANCEL_OPTION);
               out.println("existe error en logueo de usuario"+error.getMessage());
            }
        }
        if("administrador".equals(boton))
        {administrador(request,response);}
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(MantenimientoAccesoServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (SQLException ex) {
            Logger.getLogger(MantenimientoAccesoServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private void accesosistem(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String usuario=log.getCUI_PERS();
        try
        {
            base.conectar();
            conn=base.getconection();
            st=conn.createStatement();
            String query1="select CUI_PERS, PASS_ACCESO from tb_acceso";
            query1=query1+" where CUI_PERS='"+log.getCUI_PERS()+"' AND PASS_ACCESO='"+log.getPASS_ACCESO()+"'";
            rs=st.executeQuery(query1);
            if(rs.next())
            {
                HttpSession session = request.getSession(true);
                session.setAttribute("CuiLog",usuario);
                request.setAttribute("CuiLog", usuario);
                JOptionPane.showMessageDialog(null, "Usted se esta autenticando con el usuario de DNI: "+usuario, "Mensaje", JOptionPane.INFORMATION_MESSAGE);  
                getServletContext().getRequestDispatcher("/main.jsp").forward(request, response); 
            }else
            {
                JOptionPane.showMessageDialog(null, "Error al ingresar, Usuario no existe o clave incorrecta", "Mensaje", JOptionPane.ERROR_MESSAGE);
                getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); 
            }
        }catch(SQLException m)
                {
                    out.println("Error al validar acceso: "+m.getMessage());
                }
    }

    private void actualizapass(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
         try
        {
            base.conectar();
            conn=base.getconection();
            st=conn.createStatement();
            String query1="select CUI_PERS, PASS_ACCESO from tb_acceso";
            query1=query1+" where CUI_PERS='"+log.getCUI_PERS()+"' AND PASS_ACCESO='"+log.getPASS_ACCESO()+"'";
            rs=st.executeQuery(query1);
            if(rs.next())
            {
                if(pas1.equals(pas2))
                {
                    try
                    {
                        base.conectar();
                        conn=base.getconection();
                        st=conn.createStatement();
                        String query2="UPDATE TB_ACCESO";
                        query2=query2+" SET PASS_ACCESO='"+pas1+"'";
                        query2=query2+" WHERE CUI_PERS='"+log.getCUI_PERS()+"'";
                        int valor=st.executeUpdate(query2);
                        if(valor>0)
                        {
                            JOptionPane.showMessageDialog(null, "Se actualizo Correctamente la contraseña", "Mensaje", JOptionPane.INFORMATION_MESSAGE);  
                            getServletContext().getRequestDispatcher("/mantenimiento/frm-cambiacontrasenia.jsp").forward(request, response);
                        }
                    }
                    catch(SQLException pas)
                    {
                        out.println("Error en la actualizacion de password "+pas.getMessage());
                    }
                }else
                {
                    JOptionPane.showMessageDialog(null, "Las claves no coinciden, ! vuelva a intenar: ","Mensaje", JOptionPane.CANCEL_OPTION);
                    getServletContext().getRequestDispatcher("/mantenimiento/frm-cambiacontrasenia.jsp").forward(request, response);
                }
            }else
            {
                JOptionPane.showMessageDialog(null, "Error al ingresar, Usuario no existe o clave incorrecta", "Mensaje", JOptionPane.ERROR_MESSAGE);
                getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); 
            }
        }catch(SQLException m)
                {
                    out.println("Error al validar acceso: "+m.getMessage());
                    m.printStackTrace();
                }
        
    }

    private void administrador(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try
        {
            base.conectar();
            conn=base.getconection();
            st=conn.createStatement();
            String query3="select CUI_PERS, PASS_ACCESO from tb_acceso";
            query3=query3+" where CUI_PERS='"+log.getCUI_PERS()+"' AND PASS_ACCESO='"+log.getPASS_ACCESO()+"'";
            rs=st.executeQuery(query3);
            if(rs.next())
            {
                HttpSession session = request.getSession(true);
                session.setAttribute("CuiLog","");
                JOptionPane.showMessageDialog(null, "Usted se esta autenticando con el usuario de DNI: "+log.getCUI_PERS(), "Mensaje", JOptionPane.INFORMATION_MESSAGE);  
                getServletContext().getRequestDispatcher("/mantenimiento/Admin-Manto.jsp").forward(request, response); 
            }else
            {
                JOptionPane.showMessageDialog(null, "Error al ingresar, Usuario no existe o clave incorrecta", "Mensaje", JOptionPane.ERROR_MESSAGE);
                getServletContext().getRequestDispatcher("/main.jsp").forward(request, response); 
            }
        }
        catch(SQLException admin)
        {
            out.println("Error en autenticarse como administrador"+admin.getMessage());
        }
    }
}